/******************************************************************************
 *
 * Copyright (c) 2003-2004 PalmSource, Inc. All rights reserved.
 *
 * File: new
 *
 * Release:
 *
 * Description:
 *
 *
 *****************************************************************************/


#ifndef __PALMSOURCE_CC_HDR_NEW
#define __PALMSOURCE_CC_HDR_NEW

#include <cstddef>   /* for std::size_t */
#include <exception> /* for std::exception */

#ifdef __EXCEPTIONS
#define __THROW(x) throw(x)
#define __NOTHROW() throw()
#else
#define __THROW(x)
#define __NOTHROW()
#endif

namespace std {
	class bad_alloc : public exception {
	public:
		bad_alloc() __NOTHROW();
		bad_alloc(const bad_alloc&) __NOTHROW();
		bad_alloc& operator=(const bad_alloc&) __NOTHROW();
		virtual ~bad_alloc() __NOTHROW();
		virtual const char* what() const __NOTHROW();
	};
	struct nothrow_t {};
	extern const nothrow_t nothrow;
	typedef void (*new_handler)(void);
	new_handler set_new_handler(new_handler new_p) __NOTHROW();
}

void * operator new(std::size_t size) __THROW(std::bad_alloc);
void * operator new(std::size_t size, const std::nothrow_t&) __NOTHROW();
void operator delete(void * ptr) __NOTHROW();
void operator delete(void * ptr, const std::nothrow_t&) __NOTHROW();
void * operator new[](std::size_t size) __THROW(std::bad_alloc);
void * operator new[](std::size_t size, const std::nothrow_t&) __NOTHROW();
void operator delete[](void * ptr) __NOTHROW();
void operator delete[](void * ptr, const std::nothrow_t&) __NOTHROW();

void * operator new(std::size_t size, void * ptr) __NOTHROW();
void * operator new[](std::size_t size, void * ptr) __NOTHROW();
void operator delete (void * ptr, void *) __NOTHROW();
void operator delete[] (void * ptr, void *) __NOTHROW();

#endif /* __PALMSOURCE_CC_HDR_NEW */
